
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>如何实现高效的全文搜索 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>如何实现高效的全文搜索 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">什么是倒排索引（Inverted Index），它与正向索引（Forward Index）有何不同？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">倒排索引是以关键词为键，存储包含该关键词的所有文档列表的索引结构。它与正向索引不同，正向索引是记录每个文档中包含的关键词及其位置信息。倒排索引的结构极大地提高了关键词查找的效率。</div>
          </div>
          <div class="card-source">来源: 2.1 索引结构：搜索引擎的心脏</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">文档中提到了哪三种常见的分词策略，它们分别是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档中提到的三种常见分词策略是：1. 基于字典的分词（如IK Analyzer）；2. 基于统计的分词（如Jieba）；3. N-gram分词，即将文本划分为连续N个字符的子串。</div>
          </div>
          <div class="card-source">来源: 2.2 分词与词元：语义分析的基础</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">Lucene作为全文搜索的奠基石，其核心模块包含哪三个部分及其主要功能？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Lucene的核心模块包括：1. 索引创建（IndexWriter），用于构建倒排索引；2. 查询解析（QueryParser），用于解析用户输入；3. 检索引擎（IndexSearcher），用于执行查询并结合评分算法返回结果。</div>
          </div>
          <div class="card-source">来源: 3.1 Lucene：全文搜索的奠基石</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">Elasticsearch作为分布式搜索引擎，其核心特性有哪些？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Elasticsearch的核心特性包括：1. 分片机制，将索引划分为主分片和副本分片以支持水平扩展；2. RESTful API，通过JSON格式的API实现各种功能；3. 实时性，通过内存刷新和文件同步机制保证数据的毫秒级可见性。</div>
          </div>
          <div class="card-source">来源: 3.2 Elasticsearch：分布式搜索的领军者</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在Elasticsearch的分布式架构中，主节点（Master Node）和协调节点（Coordinating Node）分别扮演什么角色？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主节点（Master Node）负责元数据管理和维护集群状态。协调节点（Coordinating Node）负责接收客户端请求，并将其分发到目标分片。</div>
          </div>
          <div class="card-source">来源: 3.2.1 分布式架构</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">在进行索引优化时，`text`和`keyword`这两种字段映射类型有什么区别和适用场景？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文本字段（text）用于全文搜索，内容会被分词处理。关键字字段（keyword）用于精确匹配、排序和聚合，内容不会被分词。合理设置字段类型可以优化搜索和聚合性能。</div>
          </div>
          <div class="card-source">来源: 4.1.2 字段映射</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">为了避免深度分页带来的性能问题，文档推荐使用哪两种API作为替代方案？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档推荐使用 `search_after` 或 `scroll` API来替代传统的深度分页（如使用 from 和 size），以避免因深度分页导致的高资源消耗。</div>
          </div>
          <div class="card-source">来源: 4.2.3 分页优化</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">什么是索引生命周期管理（ILM），它在无缝扩展中起什么作用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">索引生命周期管理（ILM）是一种可以自动管理索引创建、滚动和删除的机制。它在无缝扩展中可以用于实现冷热数据分离，通过自动管理不同生命阶段的索引来优化资源利用。</div>
          </div>
          <div class="card-source">来源: 4.3.3 无缝扩展</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">根据文档，全文搜索未来的发展方向涉及哪些新兴技术？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">全文搜索未来的新兴技术方向包括：1. 语义搜索，通过BERT等预训练模型提升上下文理解能力；2. 知识图谱，结合实体关系增强语义表达；3. 边缘计算，通过分布式边缘节点实现低延迟搜索。</div>
          </div>
          <div class="card-source">来源: 6.1 新兴技术</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
